const jwt = require('express-jwt');
const jwtSign = require('jsonwebtoken').sign;
const jwtVerify = require('jsonwebtoken').verify;


const multer = require('multer');
const fs = require('fs');
// 设置存储引擎
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'uploads/'); // 保存文件的目录
    },
    filename: function (req, file, cb) {
        cb(null, `${Date.now()}-${file.originalname}`); // 保存文件的名称，避免重名
    }
});
// 初始化multer
const upload = multer({ storage: storage });
// 创建uploads目录（如果不存在）
const uploadDir = './uploads';
if (!fs.existsSync(uploadDir)){
    fs.mkdirSync(uploadDir);
}

// 这是一个模拟的密钥，你应该在生产环境中使用更安全的密钥
const secretKey = 'your_secret_key';

// 自定义JWT验证中间件
function verifyToken(req, res, next) {
    const token = req.headers['authorization'] && req.headers['authorization'].split(' ')[1];
    if (!token) {
      return res.status(401).json({ message: 'No token provided.', data: null, code: 401  });
    }
    // console.log('token', token)
   
    jwtVerify(token, secretKey, (err, decoded) => {
      if (err) {
        return res.status(401).json({ message: 'Failed to authenticate token.'});
      }
      // 如果验证成功，将解码后的对象附加到req对象上
      req.user = decoded;
      next(); // 调用next()以继续处理请求
    });
  }
   

let { WORKERORDER } = require('../../modal/fyx/workerorder');
let { servicehistory } = require('../../modal/fyx/workerorder/servicehistory')
module.exports = function (app, response) {
    // 工单  受保护的路由（需要身份验证）
    app.get('/fyx/workerorder/*', verifyToken, function (req, res) {
        if(req.url.includes('/list')) {
            res.send({
                ...response,
                data: WORKERORDER
            }) 
        }

        if(req.url.includes('/servicehistory')) {
            res.send({
                ...response,
                data: servicehistory
            }) 
        }

    })

    // // 登录
    // app.get('/fyx/login', (req, res) => {
    //     // 在这里处理登录逻辑，例如验证用户名和密码
    //     // 假设验证成功，生成一个JWT并返回给客户端
    //     const token = jwtSign({ username: 'example_user' }, secretKey, { expiresIn: '1h' });
    //     res.json({ code: 200, data: {
    //         token
    //     } });
    // });

    // // 身份证正反面上传
    // app.post('/fyx/uploadID',upload.fields([
    //     { name: 'frontImage', maxCount: 1 },
    //     { name: 'backImage', maxCount: 1 }
    //   ]), (req, res) => {
    //     try {
    //         res.send({
    //             code: 200,
    //             data: null,
    //             msg: '图片上传成功'
    //            });
    //     } catch (error) {
    //         console.log('er /fyx/uploadID', error)
    //     }
    // })

    // 合同
    // http://localhost:3004/fyx/%E6%96%B0%E8%BD%A6%E9%94%80%E5%94%AE%E5%90%88%E5%90%8C.pdf

    // 错误处理中间件（处理其他可能的错误）
 // 错误处理中间件（处理JWT验证失败的情况）
    app.use((err, req, res, next) => {
        console.log('err.name', err.name)
        if (err.name === 'UnauthorizedError') {
           res.status(401).json({ message: 'Invalid or expired token' });
        } else {
           next(err);
        }
    });
}